home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- name=`basename $0`
-
- #############################################################################
- # AUTHOR: Timothy J. Luoma <luomat@capitalist.princeton.edu>
- #
- # VERSION: 1.0.0
- #
- # DATE: 09 April 1996
- #
- # WARNING: USE ENTIRELY AT YOUR OWN RISK
- #
- # PURPOSE: to make using the extended flags of 'find' a little easier
- # by entering into an interactive mode for some common flags
- #
- # TESTED UNDER: NeXTStep 3.2 on my NeXTStation
- #
- # USAGE NOTES:
- # All arguments given are ignored
- #
- # If you do not want to set any of the options, just hit ENTER
- #
- # It assumes you know _something_ about how 'find' works
- #
- # Not all flags are available, basically the ones I like
- #
- #############################################################################
- echo -n "$name: what directory? (Press enter to select current directory) "
- read dir
-
- if [ "$dir" = "" ]
- then
- dir="."
- else
- if [ -d "$dir" ]
- then
- : #placeholder
- else
- echo "$name error: $dir is not a dir, using . "
- fi
- fi
-
- ######################################################
- echo -n "$name: what filename? (Press enter for ALL) "
- read filename
-
- all=no
-
- if [ "$filename" = "" ]
- then
- # filename1="-name *"
- all=yes
- else
- filename1="-name $filename"
-
- echo -n " Only exact matches to $filename? [y/N] "
- stty cbreak
- wildcard=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
- stty -cbreak
-
- case $wildcard in
- y|Y) wildcard=no
- ;;
-
- *) wildcard=yes
- ;;
- esac
- fi
-
- ######################################################
- echo "$name: what type?"
- echo -n " (d)irectory (f)ile (l)ink (s)ocket (b)lock (c)haracter (p)ipe -> "
- stty cbreak
- type=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
- stty -cbreak
-
- case $type in
- b|c|d|f|p|l|s)
- type1="-type $type"
- echo " "
- ;;
-
- *) #no type specified
- type1=""
- ;;
- esac
-
- ######################################################
- echo -n "$name: what user? "
- read user
-
- if [ "$user" = "" ]
- then
- user1=""
- else
- user1="-user $user"
- fi
-
- ######################################################
- echo -n "$name: last a)ccess m)odified c)hanged? "
- stty cbreak
- amc=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
- stty -cbreak
-
- case $amc in
- a|m|c)
- echo " "
- echo -n " how many days? (use + and -) "
- read days
-
- if [ "$amc" = "a" ]
- then
- amc1="-atime $days"
- elif [ "$amc" = "m" ]
- then
- amc1="-mtime $days"
- else
- amc1="-ctime $days"
- fi
- ;;
-
- *) amc1=""
- ;;
- esac
-
- ######################################################
-
- echo -n "$name: command? (don't end with \;) "
- read command
-
- if [ "$command" != "" ]
- then
- echo -n "$name: confirm command? [y/N] "
- stty cbreak
- confirm=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
- stty -cbreak
-
- case $confirm in
- y*|Y*)
- command1="-ok $command "
- echo " "
- ;;
-
- *) command1="-exec $command "
- ;;
- esac
- fi
-
- ######################################################
- echo -n "$name: print? [y/N] "
- stty cbreak
- print=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
- stty -cbreak
-
- case $print in
-
- y|Y) print1="-print"
- echo " "
- ;;
-
- *) print1=""
- ;;
- esac
-
- ######################################################
- echo -n "$name: list? [y/N] "
- stty cbreak
- list=`dd if=/dev/tty bs=1 count=1 2>/dev/null`
- stty -cbreak
-
- case $list in
-
- y|Y) list1="-ls"
- echo " "
- ;;
-
- *) list1=""
- ;;
- esac
-
- ######################################################
- ######################################################
-
- if [ "$all" = "yes" ] # if the user wants to match all files
- then
- if [ "$command1" != "" ]
- then
- find $dir -name "*" $type1 $user1 $amc1 $command1 \; $print1 $list1
- else
- find $dir -name "*" $type1 $user1 $amc1 $print1 $list1
- fi
- else
- if [ "$wildcard" = "yes" ]
- then
- # if the user DOES NOT want just exact matches
- if [ "$command1" != "" ]
- then
- find $dir $filename1\* $type1 $user1 $amc1 $command1 \; $print1 $list1
- else
- find $dir $filename1\* $type1 $user1 $amc1 $print1 $list1
- fi
- else
- # if the user DOES want to use just exact matches
- if [ "$command1" != "" ]
- then
- find $dir $filename1 $type1 $user1 $amc1 $command1 \; $print1 $list1
- else
- find $dir $filename1 $type1 $user1 $amc1 $print1 $list1
- fi
- fi
- fi
-
- exit 0
- # end